/*
 * @lc app=leetcode.cn id=141 lang=javascript
 *
 * [141] 环形链表
 */

// @lc code=start
/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */

/**
 * @param {ListNode} head
 * @return {boolean}
 */
// var hasCycle = function(head) {
//     if(!head) return false;
//     let pre = head, cur = head;
//     while(cur && cur.next){
//       pre = pre.next;
//       cur = cur.next.next;
//       if(pre === cur) return true;
//     }     
//     return false;
// };

/**
 * 复习 2021-08-04
 */
// var hasCycle = function(head) {
//   if(!head || !head.next || !head.next.next) return false;

//   let pre = head, tail = head.next;
//   while(tail.next && tail.next.next){
//     pre = pre.next;
//     tail = tail.next.next;
//     if(pre === tail) return true;
//   }
//   return false;
// }

// 一起学算法
// 快慢指针
var hasCycle = function(head) {
  if(!head) return false;
  let p = head, q = head.next;
  while(p != q && q && q.next) {
    p = p.next;
    q = q.next.next;
  }
  return p === q;
}

// @lc code=end

